package cn.lanqiao.daoimpl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import cn.lanqiao.dao.HistoryDao;
import cn.lanqiao.util.JdbcUtil;

public class HistoryDaoImpl implements HistoryDao {
	@Override
	public Object[][] getHistoryCombatByUserid(String userId) {	//通过用户id查询当前账号的历史战绩
		Object[][] datas = null;	
		Connection conn = JdbcUtil.getConnection();	//建立数据库连接对象
		String sql = "select * from k_history where id=?";
		PreparedStatement ps = null;	//创建statement对象，用于执行sql命令
		ResultSet rs = null;			//通过ResultSet接收查询结果
		try {
			/*无参数的prepareStatement()方法使用的是默认参数,statement执行后得到的结果集类型为 ResultSet.TYPE_FORWARD_ONLY.这种类型的结果集
			只能通过rs.next();方法逐条读取,使用其他方法就会报异常. 如果想执行一些复杂的移动结果集指针的操作就要使用其他参数*/
			ps = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
			ps.setString(1,userId);
			rs = ps.executeQuery();
			int temp = 0;	//临时变量temp，用于取得查询结果的数量	
			while(rs.next()) {
				temp++;
			}
			datas = new Object[temp][];	//根据查询结果的行数来确定二维数组的大小
			rs.beforeFirst();
			for(int i=0;i<temp;i++) {
			if(rs.next()) {
				String usehero = rs.getString("usehero");
				String pkrate = rs.getString("pkrate");
				String win_or_lose = rs.getString("win_or_lose");
				String kda = rs.getString("kda");
				Integer herodamage = rs.getInt("herodamage");
				Integer takedamage = rs.getInt("takedamage");
				String estimate = rs.getString("estimate");
				Integer score = rs.getInt("score");
				// 将查询结果存储到二维数组中
				datas[i] = new Object[] { usehero, pkrate, win_or_lose, kda, herodamage, takedamage, estimate,score };
			}
		}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		JdbcUtil.close(rs, ps, conn);
		return datas;
	}
}
